//加载模块（组件）layer模块 作用是弹出层，提示框
//form 表单组件
//table组件
//每个组件都有对应的方法事件
layui.use(['layer', 'form', 'laydate', 'table'], function () {
    var layer = layui.layer
        , form = layui.form
        ,$=layui.$
        ,table = layui.table
        ,laydate=layui.laydate;

    //table组件 render 渲染方法（加载表格等）
    //render({json对象}) json在js 中表示js对象的一种方式
    //格式{
    // 属性名1：值1
    //属性名2：值2
    //}
    //这是根据数据库查 因为没有book表就拿user表代替了查询用户的信息
    table.render({
        elem: '#mytable'//表格的ID
        ,url: 'limitSecurity'//表格的数据源 controller里的方法
        ,cellMinWidth: 60 //全局定义常规单元格的最小宽度，layui 2.2.1 新增
        ,height:'full-180'
        ,toolbar:'#userToolBar'//通过工具条的ID来区分
        ,page: true//开启分页
        //返回的数据不符合规范，正确的成功状态码 (code) 应为：0
        // ,parseData:function (res) {
        //     console.log(res);
        //     return{
        //         "code":0
        //         ,"msg":""
        //         ,"count":50
        //         ,"data":res
        //     }
        // }
        ,limit:5//默认进去每页显示5条
        ,limits:[5,10,15]//自己设置下拉列表5,10,15，行
        ,cols: [[
            //field:列字段的名字要与实体类的名字完全一致  title就是表格的标题    sort：是排序的意思
            //数据没加载出来的原因1：
            //1:压根没有数据
            //2:有一个列没对象
            //hide:true 隐藏
            {type: 'checkbox', field: 'left'}
            ,{field: 'securityId',align:'center',  title: '证券编号', sort: true}
            , {field: 'securityName',align:'center',  title: '证券名称'}
            , {field: 'releaseDate', align:'center', title: '发行日期'}
            , {field: 'delayDate', align:'center', title: '延迟日期',templet:function (i) {
                    if (i.delayDate=='1'){
                        return 'T+1';
                    }else if (i.delayDate=='2'){
                        return 'T+2';
                    }else if (i.delayDate=='3'){
                        return 'T+3';
                    }else if (i.delayDate=='4'){
                        return 'T+4';
                    }

                }}
            , {field: 'securityType',align:'center',  title: '证券类型',templet:function (i) {
                    if (i.securityType=='1'){
                        return '股票';
                    }else if (i.securityType=='2'){
                        return '债券';
                    }
                }}
            , {field: 'exchangeName', align:'center', title: '交易所', templet: function (i) {
                    if (i.exchangeName=='1'){
                        return '深交所';
                    }else if (i.exchangeName=='2'){
                        return '上交所';
                    }
                }}
            , {field: 'plateId', align:'center', title: '板块分类',hide:true}
            ,{field: 'Remark',align:'center', title:'备注'}
            ,{field: '',title: '操作',align:'center',toolbar: '#toolEventDemo',fixed: 'right'}
        ]]
    });

    //给表格的工具栏添加监控
    table.on('toolbar(mytable)', function (obj) {
        //获取选中复选框的对象，
        var checkStatus=table.checkStatus(obj.config.id);//得到表格选中行的ID
        //监控工具条的事件处理方法
        //判断 点击的是工具栏 当中的哪个按钮 要根据按钮的 lay-event 属性来加以区分
        switch (obj.event) {
            //添加
            case 'add':
                layer.open({
                    type:1,
                    title:'新增证券窗口',
                    closeBtn:1,
                    move:false,
                    content:$("#addSecurity"), //引用下面用户新增界面的ID（内容）div的ID
                    btn:[],
                    area:['650px','400px']
                })
                // $("#addForm").reset();//表单的ID--------------------
                form.render();//表格对象的重新加载方法
                break;
            //批量删除按钮的点击事件
            case 'deleteAll':
               //获取复选框选中要批量删除的对象
                var data=obj.data;//获取当前行数据
                // var layEvent=obj.event;//获得 lay-event 对应的值（也可以是表头的 event 参数对应的值）
                // var tr = obj.tr; //获得当前行 tr 的 DOM 对象（如果有的话）
                var data1 = checkStatus.data;
                if(data1.length==0){
                    layer.msg("请至少选择一条数据",)
                }else {
                    //定义选取对象id的数组
                    var idArr="";
                    for (var i = 0; i <data1.length; i++) {
                        idArr+=data1[i].securityId;
                        if(i<data1.length-1){
                            idArr+=","
                        }
                        // idArr.push(data1[i].securityId);
                        // console.log(idArr+"ppppppp");
                    }
                    //这里是多选删除的
                    layer.confirm('真的删除行么',{icon:2}, function(index){
                        //是否确定删除 是就删 取消就不删
                        layer.closeAll();
                        $.ajax({
                            type:"post",
                            url:"deleteMoreSecurity",//跟删除的是一个方法
                            data:{securityId:idArr},
                            success:function (msg){
                                //刷新表格
                                table.reload("mytable")//mytable 是表格的ID
                                location.reload();//刷新,第二种刷新方式，比如第四页只有一条数据，你把它删除了，它就会显示无数据，我们要显示的是前面三页数据，所以就再拿location.leload();再刷新一次
                            }
                        })
                    })
                }
                break;
            //查询
            case 'search':
                 // alert('模糊查询');
                //模糊查询的代码
                //table.reload();//表格对象的重新加载方法
                //证券编号
                var securityId = $("#security_id").val();
                //交易所
                var exchangeName=$("#exchange_name").val();
                //证券类型
                var securityType = $("#security_type").val();
                console.log(securityId);
                console.log(exchangeName);
                console.log(securityType)
                //重新把表格渲染了一遍 mytable是表格的ID
                table.reload('mytable',
                    {
                        //查询的条件
                        where: {
                            'securityId': securityId,
                            'exchangeName':exchangeName,
                            'securityType':securityType
                        },
                        //page设定默认当前页为1 current 当前的
                        page: {
                            curr: 1
                        }
                    });
                // 进行搜索之后不再让值消失，除非自己清空
                $("#security_id").val(securityId);
                $("#exchange_name").val(exchangeName);
                $("#security-type").val(securityType);
                break;
        }
    })



    //新增表单提交
    //新增提交  form.on 提交事件的方法，第一个参数 submit(表单layfilter)
    form.on('submit(addSecurity)',function (data){
        console.log(data)
        //1表单数据   formData的意思是表单数据
        var formData=$('#addForm').serialize();
        // alert("formData=" + formData);
        //2:发送请求到后台去进行保存
        $.post("insertSecurity",formData,function (msg){
            // alert("从后台传过来的数据：" + msg);
            if(msg>0){
                //3)窗口关闭
                //4)表格刷新 selectSysUser:重新进查询的方法查一次，在界面上显示
                table.reload('mytable');
                //5)给予提示
                layer.msg('添加成功',{
                    title : '提示',
                    area : [ '200px', '140px' ],
                    time : 2,//自动关闭时间
                    btn : [ '确认' ]
                });
                layer.closeAll();//关闭所有窗口
            }else{
                //5)给予提示
                layer.msg('添加失败',{
                    title : '提示',
                    area : [ '200px', '140px' ],
                    time : 2,//自动关闭时间
                    btn : [ '确认' ]
                });
                layer.closeAll();//关闭所有窗口
            }
        });
        $("#addForm").reset();//表单重置
        return false;
    });





    //删除和修改 'tool(mytable)' 是 body 里table表格的 lay-filter="mytable"
    table.on('tool(mytable)',function (obj){
        var layEvent=obj.event;//获得 lay-event 对应的值（也可以是表头的 event 参数对应的值）
        var data=obj.data;//获取当前行数据
        if(obj.event === 'del'){
            layer.confirm('真的删除行么',{icon:2}, function(index){
                //是否确定删除 是就删 取消就不删
                layer.closeAll(index);
                $.ajax({
                    type:"post",
                    url:"deleteSecurity",
                    data: {securityId: data.securityId}, //发送数据
                    success:function (msg){
                        //刷新表格
                        table.reload("mytable")//mytable 是表格的ID
                        location.reload();//刷新,第二种刷新方式，比如第四页只有一条数据，你把它删除了，它就会显示无数据，我们要显示的是前面三页数据，所以就再拿location.leload();再刷新一次
                    }
                })
            })
        }else if(obj.event == 'edit'){
            // form.val('updateForm',$.parseJSON(JSON.stringify(data)));
            form.val('updateForm',data);
            console.log(data);
            var index=layer.open({

                //type 为1 弹出一个界面 默认为0 弹出信息框
                type: 1,
                //标题
                title: '修改证券信息',
                //关闭按钮 默认值为1 有两种 1,2 不许要则为0
                closeBtn: 1,
                //不允许拖动
                move:false,
                content:$("#upSecurity"),//内容
                btn:[],
                //宽高
                area:['650px','400px'],
            });


            //修改表单提交
            form.on('submit(upSecurity)',function (data) {
                //1表单数据   formData的意思是表单数据
                var formData=$('#updateForm').serialize();
                console.log("formData=" + formData);
                //2:发送请求到后台去进行保存
                $.post("update_Security",formData,function (msg){
                    // alert("从后台传过来的数据：" + msg);
                    if(msg>0){
                        //3)窗口关闭
                        //4)表格刷新 selectSysUser:重新进查询的方法查一次，在界面上显示
                        table.reload('mytable');
                        //5)给予提示
                        layer.msg('修改成功',{title : '提示', area : [ '200px', '140px' ],
                            time : 2,//自动关闭时间
                            btn : [ '确认' ]
                        });
                        layer.closeAll();//关闭所有窗口
                    }else{
                        //5)给予提示
                        layer.msg('修改失败',{title : '提示', area : [ '200px', '140px' ], time : 2,//自动关闭时间
                            btn : [ '确认' ]
                        });
                        layer.closeAll();//关闭所有窗口
                    }
                });
                // $("#updateForm").reset();//表单重置
                return false;
            });
        }
    });

    //表单进行验证的规则定义 自定义验证规则  规则的使用方法
    // lay-verify="name"
    form.verify({
        username: function(value, item){ //value：表单的值、item：表单的DOM对象
            if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
                return '用户名不能有特殊字符';
            }
            if(/(^\_)|(\__)|(\_+$)/.test(value)){
                return '用户名首尾不能出现下划线\'_\'';
            }
            if(/^\d+\d+\d$/.test(value)){
                return '用户名不能全为数字';
            }

            //如果不想自动弹出默认提示框，可以直接返回 true，
            // 这时你可以通过其他任意方式提示（v2.5.7 新增）
            if(value === 'sb'){
                return '用户名不能为敏感词';
            }
        }

    });

    laydate.render({
        elem: '.dateStr'
    });



});


function quxiao1() {
    layer.closeAll();
}

//显示下拉列表
layui.use([ 'tableSelect'], function () {
    var $=layui.jquery,
        tableSelect=layui.tableSelect;
    //增加得下拉表格
    tableSelect.render({
        elem:'#selectOption',
        checkedKey:'securityId',
        table:{
            url:'selectPlate',
            cellMinWidth:60,

            cols:[
                [   {type:'radio'},
                    {field:'plateId',title:'股票ID',width:250},
                    {field: 'plateName',title: '股票名称',width:250}
                ]
            ]
        },
        done:function (elem,data) {
            //elem:返回之前input对象；data:表格返回的选中的数据 []
            var newJson=[];
            //遍历选中的数据
            $.each(data.data,function (index,item) {
                newJson.push(item.plateId);
                $("#securityId").val(item.plateId);
            });
            elem.val(newJson.join(","));//给输入框里显示的值赋值

        }
    })

})


